package com.sprouting.personal.model.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sprouting.personal.annotations.CheckLength;
import com.sprouting.personal.annotations.CheckNotNull;
import com.sprouting.personal.interfaces.common.Constant;
import com.sprouting.personal.model.common.BaseModel;
import com.sprouting.personal.model.common.jsr.AddGroup;
import com.sprouting.personal.model.common.jsr.UpdGroup;
import lombok.Data;

import javax.validation.constraints.Null;

/**
 * 密码管理
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/11/11 15:17
 */
@Data
@TableName("ps_password")
public class PsPassword extends BaseModel {

    /**
     * 主键
     */
    @TableId
    @CheckNotNull(message = "非法ID", groups = UpdGroup.class)
    @Null(message = "无效ID", groups = AddGroup.class)
    private String id;
    /**
     * 隶属用户
     */
    private String userId;
    /**
     * 所属家庭成员id
     * @see Constant.DefaultValue#STRING 默认为全家
     */
    private String userMemberFamilyId;
    /**
     * 密码类型id
     */
    @CheckNotNull(message = "请选择密码类型")
    private String typeId;
    /**
     * 名称
     */
    @CheckLength(min = 1, max = 150, message = "密码名称超过长度限制")
    @CheckNotNull(message = "请输入密码名称")
    private String name;
    /**
     * 账号
     */
    @CheckLength(min = 1, max = 100, message = "账号超过长度限制")
    @CheckNotNull(message = "请输入账号")
    private String account;
    /**
     * 密码1
     */
    private String password;
    /**
     * 密码2-比如支付宝的二级密码
     */
    private String passwordTwo;
    /**
     * 密码3，密码有时候多个，比如社保的支付密码
     */
    private String passwordThree;
    /**
     * 密码4
     */
    private String passwordFour;
    /**
     * 绑定手机
     */
    private String phone;
    /**
     * 绑定邮箱
     */
    private String email;
    /**
     * 密保
     */
    private String passwordProtection;
    /**
     * 网站名称
     */
    private String webName;
    /**
     * 网站url
     */
    private String webUrl;
    /**
     * 描述-描述该密码
     */
    private String describe;
    /**
     * 附加信息-可能上面保存不了的其他密码信息
     */
    private String subsidiaryInfo;
}
